Computer networks were developed to allow multiple computers to communicate with each other. In general, a network can include a combination of hardware and software that cooperate to facilitate the desired communications. One example of a computer network is the Internet, a sophisticated worldwide network of computer system resources.
The growing size of networks, particularly the Internet, makes it difficult to locate relevant information in an expedient fashion. As a result, search tools were developed to locate information on the network based on a query input by a user. Two common search methods include the use of search engines and directories, both having capability to search contents from the Internet. One difference between search engines and directories is in the manner in which each tool compiles the content. Search engines comprise a search tool referred to as a spider, a crawler, or a robot, which builds indexes of the contents contained in the traversed addresses according to well-known protocols and algorithms. The results are then collected for the user to query and explore.
A user-input query in the form of search words, phrases, keywords, network addresses, etc., prompts the search engine to sift through the plurality of collected contents (typically on the order of millions) in the index to find matches to the user query. Conventional search tools reside on a server accessible to multiple users. Search queries are sent from the users to the search tools through a network connection. The search tools respond to the user query and execute a search algorithm to identify any network addresses containing information matching the query. In theory, spiders are capable of traversing the entire Internet to locate matching URLs (Uniform Resource Locator). In practice, however, only a small fraction of the Internet is traversed when building a collection/repository. Directories are similarly limited because the indexes are selectively compiled by human operators.
One problem with conventional search tools is a lack of contextual search results. Current tools do not provide a user with some forms of information related to the search query. For example, a user may want to identify a person and/or source that is commonly associated with a particular topic. Since conventional search tools only return results based on word matches, the user must seek out individuals with a high level of domain knowledge to find an expert for a given topic. This presents more problems as the opinions and suggestions of various individuals can vary, thereby making the user's contextual search subjective even when it is feasible. Another problem with conventional search tools is the use of extensive computational power spent by indexing. Such conventional search tools typically do not dynamically respond to user input and pre-compute a search function by considering all conceivable user queries.